Dim Numbers&(0 To 3) Dim arg1&, arg2&, answer& Sub Form_Load () arg1& = 10& arg2& = 5& txVal1.Text = Format$(arg1&) txVal2.Text = Format$(arg2&) End Sub Sub operator_Click (index As Integer) Numbers&(0) = arg1& Numbers&(1) = arg2& 'first must get the pointer (selector/offset) lpVBArray& = VBPTRtoLong&(Numbers&(0)) 'get selector from pointer VBSel% = lpVBArray& \ &H10000 'get handle from selector lhvbarray& = GlobalHandle(VBSel%) hvbArray% = VBLowWord(lhvbarray&) 'lock VB array in virtual address space GlobalFix (hvbArray%) Select Case Operator(index).Caption Case "+" If (opt16.Value) Then answer = AddTwo(Numbers&(0)) Else answer = AddTwo32(Numbers&(0)) answer = Numbers&(2) End If Case "-" If (opt16.Value) Then answer = SubTwo(Numbers&(0)) Else answer = SubTwo32(Numbers&(0)) answer = Numbers&(2) End If Case "X" If (opt16.Value) Then answer = MultTwo(Numbers&(0)) Else answer = MultTwo32(Numbers&(0)) answer = Numbers&(2) End If Case "/" If arg2 = 0 Then MsgBox "Can't divide by zero", 48, "ThunkCalc" Else If (opt16.Value) Then answer = DivTwo(Numbers&(0)) Else answer = DivTwo32(Numbers&(0)) answer = Numbers&(2) End If End If End Select GlobalUnFix (hvbArray%) labReadOut.Caption = Format$(answer) End Sub Sub txVal1_Change () arg1& = Val(txVal1.Text) End Sub Sub txVal2_Change () arg2& = Val(txVal2.Text) End Sub